#pragma once

#if WIICIS_PLATFORM == WIICIS_PLATFORM_WINDOWS
#define WIICISIO_EXPORT_DECL __declspec(dllexport)
#define WIICISIO_IMPORT_DECL __declspec(dllimport)
#else
#define WIICISIO_EXPORT_DECL
#define WIICISIO_IMPORT_DECL
#endif

#ifdef WIICISIO_COMPILE_LIB
#define WIICISIO_EXPORT WIICISIO_EXPORT_DECL
#else
#define WIICISIO_EXPORT WIICISIO_IMPORT_DECL
#endif

namespace WiiCIS {
	namespace IO {
		typedef unsigned char byte;
		
		const int MAX_PAYLOAD = 32;

		enum CommandType {
			WMCMD_LED = 0x11,
			WMCMD_REPORTTYPE = 0x12,
			WMCMD_RUMBLE = 0x13,
			WMCMD_IR = 0x13, // 0x14!?
			WMCMD_CTRLSTATUS = 0x15,
			WMCMD_WRITEDATA = 0x16,
			WMCMD_READDATA = 0x17,
			WMCMD_IR2 = 0x1A,
		};

		enum ReportType {
			WMRPT_BTNS = 0x30,
			WMRPT_BTNS_ACC = 0x31,
			WMRPT_BTNS_ACC_IR = 0x33,
			WMRPT_BTNS_EXP = 0x34,
			WMRPT_BTNS_ACC_EXP = 0x35,
			WMRPT_BTNS_IR_EXP = 0x36,
			WMRPT_BTNS_ACC_IR_EXP = 0x37,
		};
	}
}